home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1995 April / Internet Tools.iso / news / transport / cnews / patches / CR.B < prev    next >
Encoding:
Text File  |  1994-11-27  |  49.9 KB  |  1,844 lines

  1. Newsgroups: news.software.b
  2. Subject: C News patch CR.B
  3.  
  4. This is the first part of a two-part patch, CR.C being the second, for
  5. the C News Cleanup Release.  The distribution files on ftp.cs.toronto.edu
  6. and zoo.toronto.edu have been updated to match.  See the README.changes
  7. diff below for what's been done.
  8.  
  9. start of patch CR.B
  10. (suggested archive name:  patchCR.B)
  11. apply with   patch -p0 <thisfile
  12.  
  13. Prereq: CR.A.
  14. *** README.mastercopy    Sun Nov 27 20:04:56 1994
  15. --- README    Sun Nov 27 19:29:28 1994
  16. ***************
  17. *** 1,4 ****
  18. ! This is the Cleanup Release of C News, with patch CR.A.        Oct 1994
  19.   
  20.   The current C News distribution can be retrieved by anonymous FTP from
  21.   ftp.cs.toronto.edu (file pub/c-news/c-news.tar.Z) or ftp.zoo.toronto.edu
  22. --- 1,4 ----
  23. ! Cleanup Release of C News, with patch CR.B (which needs .C).    Nov 1994
  24.   
  25.   The current C News distribution can be retrieved by anonymous FTP from
  26.   ftp.cs.toronto.edu (file pub/c-news/c-news.tar.Z) or ftp.zoo.toronto.edu
  27. ***************
  28. *** 6,18 ****
  29.   hours (0800-1800 Eastern time, zone -0500).  Major archive sites such as
  30.   ftp.uu.net and ftp.funet.fi also usually have the latest distribution.
  31.   
  32. ! See README.changes for what's new and wonderful.
  33. ! See README.install for installation instructions.
  34.   
  35. ! Warning:  the documentation stinks, worse than usual. :-)  README.install
  36. ! and the stuff in notebook/ are current.  The stuff in man/ is thought to be
  37. ! correct but may be incomplete in small ways.  The stuff in doc/ is mostly
  38. ! out of date and should not be trusted too far.
  39.   
  40.   We are grateful for financial support of C News development by the
  41.   following, none of whom are to blame for the final result (some more
  42. --- 6,15 ----
  43.   hours (0800-1800 Eastern time, zone -0500).  Major archive sites such as
  44.   ftp.uu.net and ftp.funet.fi also usually have the latest distribution.
  45.   
  46. ! See README.changes for what's new and wonderful, README.install for
  47. ! installation instructions, README.etc for general notes.
  48.   
  49. ! Warning:  the documentation in doc/ is somewhat out of date.
  50.   
  51.   We are grateful for financial support of C News development by the
  52.   following, none of whom are to blame for the final result (some more
  53.  
  54.  
  55.  
  56. *** README.changes.mastercopy    Sun Nov 27 20:04:56 1994
  57. --- README.changes    Sun Nov 27 19:50:50 1994
  58. ***************
  59. *** 1,3 ****
  60. --- 1,21 ----
  61. + High points of patch CR.B:
  62. + This is the first part of a two-part patch, the second being CR.C.  Install
  63. + both parts, this one first.  In this part...  The viauux -g option now accepts
  64. + multi-character grade names.  The batcher now works even if off_t is longer
  65. + than long.  Just plain "make" now balks if you haven't run quiz, or if you
  66. + need to re-run it.  Expire now grumbles if a line in explist applies to no
  67. + newsgroups.  Upact has been made more robust, does a much more rigorous
  68. + check of the new active file before installing it (using the new checkactive
  69. + program in CR.C), and has a more rigorous regression test.  Complaints from
  70. + the exploder (e.g. about batch files it cannot create) are now reported
  71. + properly.  Permissions on gunzip have been fixed.  Numeric filenames in
  72. + in.coming are now absolute dates, not relative to an undocumented origin
  73. + (this is possible since CR.A's changes to filenames avoid a 14-character
  74. + problem).  The makefile now spots whether you've incompletely installed a
  75. + multi-part patch (like this one) and removes files obsoleted by patches
  76. + (something "patch" itself cannot be convinced to do).  And the usual bits
  77. + of cleanup, portability, and minor bug fixes.
  78.   High points of patch CR.A:
  79.   Quiz now pays attention to the compiler-name and config-file-location
  80.   question answers.  The PATH bug in control-message handling has been fixed.
  81.  
  82.  
  83.  
  84. *** README.etc.mastercopy    Sun Nov 27 20:04:57 1994
  85. --- README.etc    Sun Nov 27 18:16:47 1994
  86. ***************
  87. *** 0 ****
  88. --- 1,31 ----
  89. + This is C News.
  90. + C News is an implementation of the storage and forwarding subsystems of a
  91. + news system.  We include a simple reader as a bonus, but more complex ones
  92. + will usually be wanted.
  93. + You may wish to read doc/problems, which discusses common difficulties,
  94. + and doc/trouble, which is the beginnings of a troubleshooting guide.
  95. + Discussion of C News issues usually takes place in the Usenet newsgroup
  96. + news.software.b (the name is historical).  There is no C News mailing list.
  97. + If you've found a problem, we definitely do want to hear about it.  But,
  98. + we *do not* want to see 2000 lines of diff listing!  What we want to see
  99. + is a concise human-readable description of what the problem is and how, 
  100. + if at all, you solved it.  If we want the diff listing, we will ask.
  101. + Similarly, we are interested in hearing about changes and improvements,
  102. + but want to see terse descriptions first.
  103. + To send comments, complaints, problem reports, etc., do *not* mail to
  104. + Geoff or Henry personally, but to:
  105. +     c-news@zoo.toronto.edu
  106. + aka    c-news@zoo.utoronto.ca
  107. + aka    utzoo!c-news
  108. + (Note that this has changed, c-news used to be on utstat.)
  109. +                     Geoff Collyer
  110. +                     Henry Spencer
  111.  
  112.  
  113.  
  114. *** README.install.mastercopy    Sun Nov 27 20:04:57 1994
  115. --- README.install    Wed Nov  2 00:12:11 1994
  116. ***************
  117. *** 13,19 ****
  118.       charges onward -- it knows what it's doing.  Note:  getting the
  119.       command search path set up properly for compiling is up to you --
  120.       the search path which quiz asks about is used only for *running*
  121. !     them.
  122.   
  123.   3. (optional but recommended) "make r".  This will run regression tests.
  124.       They take a while.  Errors that don't cause make to stop are not
  125. --- 13,21 ----
  126.       charges onward -- it knows what it's doing.  Note:  getting the
  127.       command search path set up properly for compiling is up to you --
  128.       the search path which quiz asks about is used only for *running*
  129. !     the software.  Also, you need to get the umask set up so that the
  130. !     compiled binaries will have the right permissions -- again, the
  131. !     umask quiz asks about is used only for *running* the software.
  132.   
  133.   3. (optional but recommended) "make r".  This will run regression tests.
  134.       They take a while.  Errors that don't cause make to stop are not
  135. ***************
  136. *** 59,65 ****
  137.       addresses.  Also, unless your site is engaged in network mapping,
  138.       you should arrange for mail to "newsmap" to be discarded (not
  139.       returned, not forwarded, just discarded) to minimize the effects
  140. !     of "sendsys bombing" by practical jokers.
  141.   
  142.   13. Put conf/crontab, or something like it, in as the news-database
  143.       owner's crontab.
  144. --- 61,70 ----
  145.       addresses.  Also, unless your site is engaged in network mapping,
  146.       you should arrange for mail to "newsmap" to be discarded (not
  147.       returned, not forwarded, just discarded) to minimize the effects
  148. !     of "sendsys bombing" by practical jokers.  We suggest you also
  149. !     arrange that mail to "news", "usenet", "newsmaster", and the
  150. !     news-database owner gets sent somewhere where it will be looked
  151. !     at regularly.
  152.   
  153.   13. Put conf/crontab, or something like it, in as the news-database
  154.       owner's crontab.
  155. ***************
  156. *** 80,87 ****
  157.   
  158.   18. The next time newsrun runs -- see the crontab -- the article should
  159.       appear in the newsgroup, the history file, the log file, and
  160. !     NOT in the errlog file.  Run readnews and try to read it.  If
  161. !     you can, then it looks like you did most everything right.
  162.   
  163.   19. Get a feed from somebody, somehow, and see if batches from them are
  164.       arriving in NEWSARTS/in.coming properly and being processed okay.
  165. --- 85,92 ----
  166.   
  167.   18. The next time newsrun runs -- see the crontab -- the article should
  168.       appear in the newsgroup, the history file, the log file, and
  169. !     NOT in the errlog file.  Run readnews (or some other reader) and
  170. !     try to read it.  If you can, then you did most everything right.
  171.   
  172.   19. Get a feed from somebody, somehow, and see if batches from them are
  173.       arriving in NEWSARTS/in.coming properly and being processed okay.
  174.  
  175.  
  176.  
  177. *** quiz.mastercopy    Sun Nov 27 20:04:58 1994
  178. --- quiz    Sun Nov 27 18:09:54 1994
  179. ***************
  180. *** 395,401 ****
  181.   echo '    svr4    System V Release 4 uucp'
  182.   echo '    hdb    pre-SVR4 Honey DanBer, aka Basic Networking Utilities'
  183.   echo '    sub    old uucp with subdirectories (e.g. /usr/spool/uucp/C.)'
  184. ! echo '    old    very old uucp, no subdirectories'
  185.   echo '    pre    prehistoric uucp, no subdirectories, no -g option on uux'
  186.   echo "    null    don't run uucp or don't care about queue lengths"
  187.   while :
  188. --- 395,401 ----
  189.   echo '    svr4    System V Release 4 uucp'
  190.   echo '    hdb    pre-SVR4 Honey DanBer, aka Basic Networking Utilities'
  191.   echo '    sub    old uucp with subdirectories (e.g. /usr/spool/uucp/C.)'
  192. ! echo '    vo    very old uucp, no subdirectories'
  193.   echo '    pre    prehistoric uucp, no subdirectories, no -g option on uux'
  194.   echo "    null    don't run uucp or don't care about queue lengths"
  195.   while :
  196.  
  197.  
  198.  
  199. *** makefile.mastercopy    Sun Nov 27 20:04:58 1994
  200. --- makefile    Sun Nov 27 19:24:40 1994
  201. ***************
  202. *** 12,27 ****
  203.   RDIRS=$(PDIRS)
  204.   SLOWRDIRS=libdbz
  205.   INALL=conf/inall
  206.   
  207.   # System V bug fix
  208.   SHELL=/bin/sh
  209.   
  210. ! all:    msub sub mx libcnews.a pgms
  211.       : everything built successfully
  212.   
  213.   lib:    libcnews.a
  214.   
  215. ! libcnews.a:    msub sub mx conf/liblist
  216.       $(INALL) "$(MAKE)" `cat conf/liblist`
  217.   
  218.   freshlib:
  219. --- 12,28 ----
  220.   RDIRS=$(PDIRS)
  221.   SLOWRDIRS=libdbz
  222.   INALL=conf/inall
  223. + ROPT=
  224.   
  225.   # System V bug fix
  226.   SHELL=/bin/sh
  227.   
  228. ! all:    needquiz patchchores msub sub mx libcnews.a pgms
  229.       : everything built successfully
  230.   
  231.   lib:    libcnews.a
  232.   
  233. ! libcnews.a:    needquiz msub sub mx conf/liblist
  234.       $(INALL) "$(MAKE)" `cat conf/liblist`
  235.   
  236.   freshlib:
  237. ***************
  238. *** 28,55 ****
  239.       rm -f libcnews.a conf/liblist
  240.       $(MAKE) lib
  241.   
  242. ! pgms:    msub sub mx libcnews.a
  243.       $(INALL) "$(MAKE)" $(PDIRS)
  244.       : programs built successfully
  245.   
  246. ! install:
  247.       $(INALL) "$(MAKE) install" $(PDIRS)
  248.       : 'all programs installed!'
  249.       : 'but input/newsspool needs its ownership and permissions changed'
  250.   
  251. ! setup:
  252.       $(INALL) "$(MAKE) setup" $(PDIRS)
  253.       cd conf ; $(MAKE) versetup
  254.   
  255. ! ui:
  256.       $(INALL) "$(MAKE) ui" $(UIDIRS)
  257.       : 'user interface installed'
  258.   
  259. ! readpostcheck:
  260.       $(INALL) "$(MAKE) readpostcheck" readnews
  261.       : 'readnews, postnews, checknews installed'
  262.   
  263. ! cmp:
  264.       $(INALL) "$(MAKE) cmp" $(PDIRS)
  265.       : 'no worrisome differences found'
  266.   
  267. --- 29,56 ----
  268.       rm -f libcnews.a conf/liblist
  269.       $(MAKE) lib
  270.   
  271. ! pgms:    needquiz msub sub mx libcnews.a
  272.       $(INALL) "$(MAKE)" $(PDIRS)
  273.       : programs built successfully
  274.   
  275. ! install:    needquiz
  276.       $(INALL) "$(MAKE) install" $(PDIRS)
  277.       : 'all programs installed!'
  278.       : 'but input/newsspool needs its ownership and permissions changed'
  279.   
  280. ! setup:        needquiz
  281.       $(INALL) "$(MAKE) setup" $(PDIRS)
  282.       cd conf ; $(MAKE) versetup
  283.   
  284. ! ui:    needquiz
  285.       $(INALL) "$(MAKE) ui" $(UIDIRS)
  286.       : 'user interface installed'
  287.   
  288. ! readpostcheck:    needquiz
  289.       $(INALL) "$(MAKE) readpostcheck" readnews
  290.       : 'readnews, postnews, checknews installed'
  291.   
  292. ! cmp:    needquiz
  293.       $(INALL) "$(MAKE) cmp" $(PDIRS)
  294.       : 'no worrisome differences found'
  295.   
  296. ***************
  297. *** 56,61 ****
  298. --- 57,71 ----
  299.   cmpok:
  300.       $(INALL) "$(MAKE) cmp CMPOPT=-i" $(PDIRS)
  301.   
  302. + # conf/makeinc and conf/substitutions depend on quiz and conf/useanswers too,
  303. + # but including them here would defeat the don't-touch-if-unchanged trick in
  304. + # conf/useanswers which avoids spurious re-runs of subst.
  305. + include/config.make:    quiz conf/useanswers
  306. +     : "you must run (or re-run) quiz first -- see README.install"
  307. +     @false
  308. + needquiz:    include/config.make
  309.   msub:    conf/msubsts.done
  310.   
  311.   conf/msubsts.done:    conf/makefilelist conf/makeinc conf/subst
  312. ***************
  313. *** 81,87 ****
  314.       echo "include libc libcnews $(DBZ) libfake libbig" >conf/liblist
  315.   
  316.   stdio:
  317. !     cd libstdio ; $(MAKE) r || ( $(MAKE) clean ; exit 1 )
  318.       : and only if that succeeded...
  319.       cd libstdio ; $(MAKE) rclean
  320.       echo "libstdio" >>conf/liblist
  321. --- 91,97 ----
  322.       echo "include libc libcnews $(DBZ) libfake libbig" >conf/liblist
  323.   
  324.   stdio:
  325. !     cd libstdio ; $(MAKE) r $(ROPT) || ( $(MAKE) clean ; exit 1 )
  326.       : and only if that succeeded...
  327.       cd libstdio ; $(MAKE) rclean
  328.       echo "libstdio" >>conf/liblist
  329. ***************
  330. *** 102,111 ****
  331.       : "You must run 'quiz' before running 'make'."
  332.       exit 1 ;
  333.   
  334.   r:
  335. !     $(INALL) "$(MAKE) r && $(MAKE) rclean" $(RDIRS)
  336.       : leave libdbz to last because its regression test is rather slow
  337. !     $(INALL) "$(MAKE) r && $(MAKE) rclean" $(SLOWRDIRS)
  338.       : 'all tests successful!'
  339.       : 'either you or newsmaster should have mail from the "report" test'
  340.   
  341. --- 112,124 ----
  342.       : "You must run 'quiz' before running 'make'."
  343.       exit 1 ;
  344.   
  345. + patchchores:
  346. +     cd conf ; $(MAKE) patchchores
  347.   r:
  348. !     $(INALL) "$(MAKE) r $(ROPT) && $(MAKE) rclean" $(RDIRS)
  349.       : leave libdbz to last because its regression test is rather slow
  350. !     $(INALL) "$(MAKE) r $(ROPT) && $(MAKE) rclean" $(SLOWRDIRS)
  351.       : 'all tests successful!'
  352.       : 'either you or newsmaster should have mail from the "report" test'
  353.   
  354. ***************
  355. *** 129,132 ****
  356. --- 142,147 ----
  357.   
  358.   # this is strictly for development use
  359.   .DEFAULT:
  360. +     : if you see this, you are doing something wrong -- the following
  361. +     : is strictly for development use
  362.       $(MAKE) -f mfile $@
  363.  
  364.  
  365.  
  366. *** batch/viauux.mastercopy    Sun Nov 27 20:04:59 1994
  367. --- batch/viauux    Mon Oct 24 16:59:51 1994
  368. ***************
  369. *** 8,14 ****
  370.   for dummy
  371.   do
  372.       case "$1" in
  373. !     -g?)    grade="$1"        ;;
  374.       -g)    grade="-g$2" ; shift    ;;
  375.       -z)    z=-z            ;;
  376.       -n)    z=-n            ;;
  377. --- 8,14 ----
  378.   for dummy
  379.   do
  380.       case "$1" in
  381. !     -g?*)    grade="$1"        ;;
  382.       -g)    grade="-g$2" ; shift    ;;
  383.       -z)    z=-z            ;;
  384.       -n)    z=-n            ;;
  385.  
  386.  
  387.  
  388. *** batch/batcher.c.mastercopy    Sun Nov 27 20:04:59 1994
  389. --- batch/batcher.c    Mon Oct 31 15:22:46 1994
  390. ***************
  391. *** 122,128 ****
  392.       if (fstat(artfile, &sbuf) < 0)
  393.           error("internal disaster, can't fstat", "");
  394.   
  395. !     printf("#! rnews %ld\n", sbuf.st_size);
  396.       while ((count = read(artfile, buffer, sizeof buffer)) > 0) {
  397.           if (fwrite(buffer, sizeof(char), count, stdout) != count)
  398.               error("write failure in `%s'", article);
  399. --- 122,128 ----
  400.       if (fstat(artfile, &sbuf) < 0)
  401.           error("internal disaster, can't fstat", "");
  402.   
  403. !     printf("#! rnews %ld\n", (long)sbuf.st_size);
  404.       while ((count = read(artfile, buffer, sizeof buffer)) > 0) {
  405.           if (fwrite(buffer, sizeof(char), count, stdout) != count)
  406.               error("write failure in `%s'", article);
  407.  
  408.  
  409.  
  410. *** conf/subst.all.mastercopy    Sun Nov 27 20:05:00 1994
  411. --- conf/subst.all    Sun Nov 27 18:26:46 1994
  412. ***************
  413. *** 43,48 ****
  414. --- 43,49 ----
  415.   maint/addgroup
  416.   maint/addmissing
  417.   maint/badexpiry
  418. + maint/checkactive
  419.   maint/cnewsdo
  420.   maint/delgroup
  421.   maint/histfrom
  422. ***************
  423. *** 57,62 ****
  424. --- 58,65 ----
  425.   maint/newshist
  426.   maint/newswatch
  427.   maint/sysck
  428. + man/badexpiry.8cn
  429. + man/checkactive.8
  430.   man/checknews.1cn
  431.   man/cnewsdo.8cn
  432.   man/controlperm.5
  433. ***************
  434. *** 89,97 ****
  435.   util/mkpdir
  436.   util/newshostname
  437.   util/queuelen.hdb
  438. - util/queuelen.old
  439.   util/queuelen.sub
  440.   util/queuelen.svr4
  441.   util/report
  442.   util/sfcproto
  443.   util/sfshproto
  444. --- 92,100 ----
  445.   util/mkpdir
  446.   util/newshostname
  447.   util/queuelen.hdb
  448.   util/queuelen.sub
  449.   util/queuelen.svr4
  450. + util/queuelen.vo
  451.   util/report
  452.   util/sfcproto
  453.   util/sfshproto
  454.  
  455.  
  456.  
  457. *** conf/versionname.mastercopy    Sun Nov 27 20:05:01 1994
  458. --- conf/versionname    Sun Nov 27 19:29:48 1994
  459. ***************
  460. *** 1 ****
  461. ! Cleanup Release, with patch CR.A
  462. --- 1 ----
  463. ! Cleanup Release, with patch CR.B but not .C
  464.  
  465.  
  466.  
  467. *** conf/active.eg.mastercopy    Sun Nov 27 20:05:01 1994
  468. --- conf/active.eg    Thu Nov  3 19:19:29 1994
  469. ***************
  470. *** 1,3 ****
  471.   control 0000000000 00001 y
  472.   junk 0000000000 00001 y
  473. ! news.announce.newusers 0000000000 00001 y
  474. --- 1,3 ----
  475.   control 0000000000 00001 y
  476.   junk 0000000000 00001 y
  477. ! news.announce.newusers 0000000000 00001 m
  478.  
  479.  
  480.  
  481. *** conf/deadfiles.mastercopy    Sun Nov 27 20:05:02 1994
  482. --- conf/deadfiles    Sun Nov 27 20:04:55 1994
  483. ***************
  484. *** 0 ****
  485. --- 1,4 ----
  486. + doc/flow.old
  487. + expire/mkadir
  488. + util/queuelen.old
  489. + README.old
  490.  
  491.  
  492.  
  493. *** conf/useanswers.mastercopy    Sun Nov 27 20:05:03 1994
  494. --- conf/useanswers    Wed Nov  9 19:35:22 1994
  495. ***************
  496. *** 168,185 ****
  497.       echo "HFAKE=$fakehdrs"
  498.       echo "OFAKE=$fake"
  499.   ) >$tf
  500. ! if cmp $tf $uacm >/dev/null 2>/dev/null
  501.   then
  502. !     echo "unchanged, old one left in place"
  503. ! else
  504. !     >$uacm
  505. !     if test ! -w $uacm
  506. !     then
  507. !         echo "$0: unable to create \`$uacm'; aborting" >&2
  508. !         exit 1
  509. !     fi
  510. !     cp $tf $uacm || exit 1
  511.   fi
  512.   
  513.   rm -f $tf
  514.   exit 0
  515. --- 168,181 ----
  516.       echo "HFAKE=$fakehdrs"
  517.       echo "OFAKE=$fake"
  518.   ) >$tf
  519. ! # this one we always change, so makefile knows when quiz was re-run
  520. ! >$uacm
  521. ! if test ! -w $uacm
  522.   then
  523. !     echo "$0: unable to create \`$uacm'; aborting" >&2
  524. !     exit 1
  525.   fi
  526. + cp $tf $uacm || exit 1
  527.   
  528.   rm -f $tf
  529.   exit 0
  530.  
  531.  
  532.  
  533. *** conf/makefile.mastercopy    Sun Nov 27 20:05:04 1994
  534. --- conf/makefile    Sun Nov 27 19:30:31 1994
  535. ***************
  536. *** 12,17 ****
  537. --- 12,23 ----
  538.   all:    $(ALL)
  539.       $(MX) report.ctl config
  540.   
  541. + patchchores:
  542. +     : if this fails, you have not installed all parts of a multi-part patch
  543. +     test " `cat versionname | sed 's/^[^.]*\..//'`" = " " ;
  544. +     : delete files obsoleted by patches
  545. +     cd .. ; rm -f `cat conf/deadfiles` conf/dummy
  546.   install:    $(ALL)
  547.   
  548.   LASTGROUP=`egrep -v = $(NEWSCTL)/active | tr . / | sed -n '$$s/ .*//p'`
  549.  
  550.  
  551.  
  552. *** ctl/rmgroup.mastercopy    Sun Nov 27 20:05:05 1994
  553. --- ctl/rmgroup    Sat Nov  5 16:32:45 1994
  554. ***************
  555. *** 60,66 ****
  556.   ?*)    case "$action" in
  557.       *q*)    ;;
  558.       *)    (
  559. !             echo "$0: \`$author' tried"
  560.               echo "to remove newsgroup \`$g'."
  561.               echo "Request was refused:"
  562.               echo "    $reject"
  563. --- 60,66 ----
  564.   ?*)    case "$action" in
  565.       *q*)    ;;
  566.       *)    (
  567. !             echo "rmgroup: \`$author' tried"
  568.               echo "to remove newsgroup \`$g'."
  569.               echo "Request was refused:"
  570.               echo "    $reject"
  571.  
  572.  
  573.  
  574. *** ctl/newgroup.mastercopy    Sun Nov 27 20:05:05 1994
  575. --- ctl/newgroup    Sat Nov  5 16:32:36 1994
  576. ***************
  577. *** 113,119 ****
  578.   ?*)    case "$action" in
  579.       *q*)    ;;
  580.       *)    (
  581. !             echo "$0: \`$author' tried"
  582.               case "$oldstatus" in
  583.               '')    echo "to create newsgroup \`$g'."    ;;
  584.               *)    echo "to set newsgroup \`$g' to \`$f'."    ;;
  585. --- 113,119 ----
  586.   ?*)    case "$action" in
  587.       *q*)    ;;
  588.       *)    (
  589. !             echo "newgroup: \`$author' tried"
  590.               case "$oldstatus" in
  591.               '')    echo "to create newsgroup \`$g'."    ;;
  592.               *)    echo "to set newsgroup \`$g' to \`$f'."    ;;
  593. ***************
  594. *** 158,165 ****
  595.       cat $tmp >>$NEWSCTL/newsgroups
  596.       ;;
  597.   *)    # status change
  598. !     awk '$1 == "'"$g"'" { print $1, $2, $3, "'"$newstatus"'" }' \
  599. !                     $NEWSCTL/active >$NEWSCTL/active.tmp
  600.       if test `wc -l <$NEWSCTL/active.tmp` -lt `wc -l <$NEWSCTL/active`
  601.       then
  602.           fail="active.tmp is shorter than active, something's wrong"
  603. --- 158,165 ----
  604.       cat $tmp >>$NEWSCTL/newsgroups
  605.       ;;
  606.   *)    # status change
  607. !     awk '$1 == "'"$g"'" { print $1, $2, $3, "'"$newstatus"'" ; next }
  608. !         { print }' $NEWSCTL/active >$NEWSCTL/active.tmp
  609.       if test `wc -l <$NEWSCTL/active.tmp` -lt `wc -l <$NEWSCTL/active`
  610.       then
  611.           fail="active.tmp is shorter than active, something's wrong"
  612.  
  613.  
  614.  
  615. *** ctl/makefile.mastercopy    Sun Nov 27 20:05:06 1994
  616. --- ctl/makefile    Tue Nov  1 23:54:49 1994
  617. ***************
  618. *** 80,85 ****
  619. --- 80,98 ----
  620.       test -d arts/comp/lang/beta ;
  621.       test -r arts/comp/lang/beta/.overview ;
  622.       rm -f reports
  623. +     : newgroup for status change
  624. +     sed '/^comp.lang.beta/s/y$$/m/' active >active.good
  625. +     sed 's/ [0-9][0-9]* / 0 /' active.times >at.good
  626. +     cp newsgroups newsgroups.ok
  627. +     $(HERE) ./newgroup comp.lang.beta moderated <reg/n.2 >out.tmp 2>err.tmp
  628. +     test ! -s out.tmp ;
  629. +     test ! -s err.tmp ;
  630. +     cmp active.good active || diff active.good active
  631. +     sed 's/ [0-9][0-9]* / 0 /' active.times >at.tmp
  632. +     cmp at.good at.tmp || diff at.good at.tmp
  633. +     cmp newsgroups.ok newsgroups || diff newsgroups.ok newsgroups
  634. +     cmp reg/n.2r reports || diff reg/n.2r reports
  635. +     rm -f reports
  636.       : rmgroup
  637.       egrep -v soundcard active >active.good
  638.       egrep -v soundcard active.times >at.good
  639.  
  640.  
  641.  
  642. *** ctl/reg/n.2.mastercopy    Sun Nov 27 20:05:06 1994
  643. --- ctl/reg/n.2    Tue Nov  1 23:50:35 1994
  644. ***************
  645. *** 0 ****
  646. --- 1,25 ----
  647. + Control: newgroup comp.lang.beta moderated
  648. + Newsgroups: comp.lang.beta
  649. + Path: tadpole.com!uunet!tale
  650. + From: tale@uunet.uu.net (David C Lawrence)
  651. + Subject: newgroup comp.lang.beta
  652. + Approved: tale@uunet.uu.net
  653. + Sender: tale@uunet.uu.net (David C Lawrence)
  654. + Date: Tue, 6 Sep 1994 14:31:58 GMT
  655. + Message-ID: <2CvpppA.B1M@uunet.uu.net>
  656. + Lines: 14
  657. + comp.lang.beta is an unmoderated newsgroup which passed its vote for
  658. + creation by 354:18 as reported in news.announce.newgroups on 30 Aug 1994.
  659. + For your newsgroups file:
  660. + comp.lang.beta        The object-oriented programming language BETA.
  661. + The charter, culled from the call for votes:
  662. + comp.lang.beta will receive all the postings from comp.lang.misc and
  663. + comp.object concerning the BETA language and the programs and systems
  664. + written in or supporting BETA. Discussions concerning object-oriented
  665. + programming principles based on the concepts known from BETA will also
  666. + take place, possibly cross-posted to comp.object.
  667.  
  668.  
  669.  
  670. *** ctl/reg/n.2r.mastercopy    Sun Nov 27 20:05:07 1994
  671. --- ctl/reg/n.2r    Tue Nov  1 23:54:30 1994
  672. ***************
  673. *** 0 ****
  674. --- 1,32 ----
  675. + status change for comp.lang.beta
  676. + :::
  677. + tale@uunet.uu.net (David C Lawrence) said to
  678. + set `comp.lang.beta' to moderated.
  679. + This was done.
  680. + ===
  681. + Control: newgroup comp.lang.beta moderated
  682. + Newsgroups: comp.lang.beta
  683. + Path: tadpole.com!uunet!tale
  684. + From: tale@uunet.uu.net (David C Lawrence)
  685. + Subject: newgroup comp.lang.beta
  686. + Approved: tale@uunet.uu.net
  687. + Sender: tale@uunet.uu.net (David C Lawrence)
  688. + Date: Tue, 6 Sep 1994 14:31:58 GMT
  689. + Message-ID: <2CvpppA.B1M@uunet.uu.net>
  690. + Lines: 14
  691. + comp.lang.beta is an unmoderated newsgroup which passed its vote for
  692. + creation by 354:18 as reported in news.announce.newgroups on 30 Aug 1994.
  693. + For your newsgroups file:
  694. + comp.lang.beta        The object-oriented programming language BETA.
  695. + The charter, culled from the call for votes:
  696. + comp.lang.beta will receive all the postings from comp.lang.misc and
  697. + comp.object concerning the BETA language and the programs and systems
  698. + written in or supporting BETA. Discussions concerning object-oriented
  699. + programming principles based on the concepts known from BETA will also
  700. + take place, possibly cross-posted to comp.object.
  701. + ===
  702.  
  703.  
  704.  
  705. *** ctl/controlperm.eg.mastercopy    Sun Nov 27 20:05:07 1994
  706. --- ctl/controlperm.eg    Wed Nov  2 00:09:38 1994
  707. ***************
  708. *** 1,14 ****
  709.   # Dave Lawrence runs the main Usenet hierarchies
  710. ! comp,sci,misc,rec,soc,talk    tale@uunet.uu.net    n    y
  711.   # but his name can be forged, so don't let him rmgroup...
  712. ! comp,sci,misc,rec,soc,talk    tale@uunet.uu.net    r    n
  713.   # and nobody else gets any attention in these hierarchies
  714. ! comp,sci,misc,rec,soc,talk    any            nr    nq
  715.   
  716.   # same for Jim McIntosh in bit
  717.   bit                jim@american.edu    n    y
  718.   bit                jim@american.edu    r    n
  719.   bit                any            nr    nq
  720.   
  721.   # it's really tempting to change this one to nq...
  722.   alt                any            nr    nv
  723. --- 1,21 ----
  724.   # Dave Lawrence runs the main Usenet hierarchies
  725. ! comp,sci,misc,news,rec,soc,talk    tale@uunet.uu.net    n    y
  726.   # but his name can be forged, so don't let him rmgroup...
  727. ! comp,sci,misc,news,rec,soc,talk    tale@uunet.uu.net    r    n
  728.   # and nobody else gets any attention in these hierarchies
  729. ! comp,sci,misc,news,rec,soc,talk    any            nr    nq
  730.   
  731.   # same for Jim McIntosh in bit
  732.   bit                jim@american.edu    n    y
  733.   bit                jim@american.edu    r    n
  734.   bit                any            nr    nq
  735. + # ClariNet newgroups come from this address
  736. + clari                clarinet@clarinet.com    n    yv
  737. + # You can turn this on, at the risk of accepting forged rmgroups
  738. + clari                clarinet@clarinet.com    r    nv
  739. + # And that's all for ClariNet.
  740. + clari                any            nr    nq
  741.   
  742.   # it's really tempting to change this one to nq...
  743.   alt                any            nr    nv
  744.  
  745.  
  746.  
  747. *** expire/README.mastercopy    Sun Nov 27 20:05:08 1994
  748. --- expire/README    Wed Oct 19 00:01:24 1994
  749. ***************
  750. *** 3,9 ****
  751.   expire.c    does the real work
  752.   expireiflow    wrapper to run expire only if things are tight
  753.   explist.eg    sample expiry-control file
  754. - mkadir        auxiliary program used to make archiving directories
  755.   pgood        part of the expire regression test
  756.   tgood        part of the expire regression test
  757.   upact        active-file updater, much improved from past incarnations
  758. --- 3,8 ----
  759.  
  760.  
  761.  
  762. *** expire/expire.c.mastercopy    Sun Nov 27 20:05:08 1994
  763. --- expire/expire.c    Tue Oct 18 23:55:56 1994
  764. ***************
  765. *** 20,26 ****
  766.   #include "libc.h"
  767.   #include "news.h"
  768.   #include "config.h"
  769. ! #include "fgetmfs.h"
  770.   #include "case.h"
  771.   #include "dbz.h"
  772.   #include "ngmatch.h"
  773. --- 20,26 ----
  774.   #include "libc.h"
  775.   #include "news.h"
  776.   #include "config.h"
  777. ! #include "fgetfln.h"
  778.   #include "case.h"
  779.   #include "dbz.h"
  780.   #include "ngmatch.h"
  781. ***************
  782. *** 47,52 ****
  783. --- 47,54 ----
  784.       time_t normal;        /* earliest not expired in default case */
  785.       time_t purge;        /* latest arrival date always expired */
  786.       char *dir;        /* Archive dir or NULL. */
  787. +     long ngroups;        /* for explist, number of groups dealt with */
  788. +     int lineno;        /* line number in explist */
  789.   };
  790.   
  791.   /* header for internal form of control file */
  792. ***************
  793. *** 144,149 ****
  794. --- 146,152 ----
  795.   void die();
  796.   void control();
  797.   void prime();
  798. + void checkused();
  799.   void doit();
  800.   void cd();
  801.   time_t readdate();
  802. ***************
  803. *** 280,296 ****
  804.   control(f)
  805.   register FILE *f;
  806.   {
  807. -     char line[200];        /* long enough for any sane line */
  808.       register char *p;
  809.       register int gotone = 0;
  810.   
  811. !     while (fgets(line, sizeof(line), f) != NULL) {
  812. !         p = &line[strlen(line) - 1];
  813. !         if (*p != '\n')
  814. !             die("control line `%.30s...' too long", line);
  815. !         *p = '\0';
  816. !         if (line[0] != '#')
  817. !             ctlline(line);
  818.           gotone = 1;
  819.       }
  820.   
  821. --- 283,296 ----
  822.   control(f)
  823.   register FILE *f;
  824.   {
  825.       register char *p;
  826.       register int gotone = 0;
  827. +     register int lineno = 0;
  828.   
  829. !     while ((p = fgetline(f, (size_t *)NULL)) != NULL) {
  830. !         lineno++;
  831. !         if (*p != '#')
  832. !             ctlline(p, lineno);
  833.           gotone = 1;
  834.       }
  835.   
  836. ***************
  837. *** 302,309 ****
  838.    - ctlline - process one control-file line
  839.    */
  840.   void
  841. ! ctlline(ctl)
  842.   char *ctl;
  843.   {
  844.       register struct ctl *ct;
  845.       char *field[4];
  846. --- 302,310 ----
  847.    - ctlline - process one control-file line
  848.    */
  849.   void
  850. ! ctlline(ctl, lineno)
  851.   char *ctl;
  852. + int lineno;
  853.   {
  854.       register struct ctl *ct;
  855.       char *field[4];
  856. ***************
  857. *** 379,384 ****
  858. --- 380,388 ----
  859.           checkadir(ct->dir);
  860.       }
  861.   
  862. +     ct->ngroups = 0;
  863. +     ct->lineno = lineno;
  864.       /* put it where it belongs */
  865.       if (STREQ(ct->groups, "/expired/"))
  866.           holdover = ct;
  867. ***************
  868. *** 410,422 ****
  869.       char *field[NFACT];
  870.       int nf;
  871.       register int hash;
  872. -     register int i;
  873.   
  874.       af = eufopen(afile, "r");
  875. !     while ((line = fgetms(af)) != NULL) {
  876. !         i = strlen(line);
  877. !         if (i > 0)        /* Geoff's bloody useless \n */
  878. !             line[i-1] = '\0';
  879.           nf = split(line, field, NFACT, "");
  880.           if (nf != NFACT)
  881.               die("wrong number of fields in active for `%s'", field[0]);
  882. --- 414,422 ----
  883.       char *field[NFACT];
  884.       int nf;
  885.       register int hash;
  886.   
  887.       af = eufopen(afile, "r");
  888. !     while ((line = fgetline(af, (size_t *)NULL)) != NULL) {
  889.           nf = split(line, field, NFACT, "");
  890.           if (nf != NFACT)
  891.               die("wrong number of fields in active for `%s'", field[0]);
  892. ***************
  893. *** 431,439 ****
  894.               hash = NHASH-1;
  895.           ct->next = ngs[hash];
  896.           ngs[hash] = ct;
  897. -         free(line);
  898.       }
  899.       (void) fclose(af);
  900.   }
  901.   
  902.   /*
  903. --- 431,440 ----
  904.               hash = NHASH-1;
  905.           ct->next = ngs[hash];
  906.           ngs[hash] = ct;
  907.       }
  908.       (void) fclose(af);
  909. +     checkused();
  910.   }
  911.   
  912.   /*
  913. ***************
  914. *** 453,458 ****
  915. --- 454,460 ----
  916.               ct->normal = cscan->normal;
  917.               ct->purge = cscan->purge;
  918.               ct->dir = cscan->dir;
  919. +             cscan->ngroups++;
  920.               return;
  921.           }
  922.   
  923. ***************
  924. *** 463,468 ****
  925. --- 465,488 ----
  926.   }
  927.   
  928.   /*
  929. +  - checkused - check that all lines of the control file got used
  930. +  */
  931. + void
  932. + checkused()
  933. + {
  934. +     register struct ctl *cscan;
  935. +     char grump[100];
  936. +     for (cscan = ctls; cscan != NULL; cscan = cscan->next)
  937. +         if (cscan->ngroups == 0) {
  938. +             sprintf(grump,
  939. +     "warning: line %d of control file controls no active newsgroups",
  940. +                                 cscan->lineno);
  941. +             complain(grump, "");
  942. +         }
  943. + }
  944. + /*
  945.    - doit - file manipulation and master control
  946.    */
  947.   void
  948. ***************
  949. *** 1053,1076 ****
  950.       register char *p;
  951.   
  952.       ocmd = str3save("PATH=", ctlfile("bin"), ":");
  953. !     cmd = str3save(ocmd, binfile("expire"), ":");
  954.       free(ocmd);
  955.       ocmd = cmd;
  956.       /* the semicolon here avoids problems with some buggy shells */
  957. !     cmd = str3save(ocmd, newspath(), " ; mkadir");
  958.       free(ocmd);
  959.       ocmd = cmd;
  960. !     cmd = str3save(ocmd, " ", dir);
  961.       free(ocmd);
  962. !     p = strchr(art, '/');
  963. !     while (p != NULL) {
  964. !         *p = '\0';
  965. !         ocmd = cmd;
  966. !         cmd = str3save(ocmd, " ", art);
  967. !         free(ocmd);
  968. !         *p = '/';
  969. !         p = strchr(p+1, '/');
  970. !     }
  971.       (void) system(cmd);
  972.       free(cmd);
  973.   }
  974. --- 1073,1093 ----
  975.       register char *p;
  976.   
  977.       ocmd = str3save("PATH=", ctlfile("bin"), ":");
  978. !     cmd = str3save(ocmd, binfile((char *)NULL), ":");
  979.       free(ocmd);
  980.       ocmd = cmd;
  981.       /* the semicolon here avoids problems with some buggy shells */
  982. !     cmd = str3save(ocmd, newspath(), " ; mkpdir ");
  983.       free(ocmd);
  984.       ocmd = cmd;
  985. !     cmd = str3save(ocmd, dir, "/");
  986.       free(ocmd);
  987. !     p = strrchr(art, '/');
  988. !     *p = '\0';
  989. !     ocmd = cmd;
  990. !     cmd = str3save(ocmd, art, "");
  991. !     free(ocmd);
  992. !     *p = '/';
  993.       (void) system(cmd);
  994.       free(cmd);
  995.   }
  996.  
  997.  
  998.  
  999. *** expire/makefile.mastercopy    Sun Nov 27 20:05:09 1994
  1000. --- expire/makefile    Sat Oct 22 23:59:20 1994
  1001. ***************
  1002. *** 2,10 ****
  1003.   .include "../include/config.make"
  1004.   
  1005.   BINS=expire
  1006. ! PROGS=$(BINS) upact doexpire mkadir expireiflow
  1007.   DEST=$(NEWSBIN)/expire
  1008.   ALL=$(PROGS) explist.eg
  1009.   
  1010.   all:    $(ALL)
  1011.       $(MX) $(PROGS)
  1012. --- 2,12 ----
  1013.   .include "../include/config.make"
  1014.   
  1015.   BINS=expire
  1016. ! PROGS=$(BINS) upact doexpire expireiflow
  1017.   DEST=$(NEWSBIN)/expire
  1018.   ALL=$(PROGS) explist.eg
  1019. + UPACTOPT=
  1020. + UPACTBARF=
  1021.   
  1022.   all:    $(ALL)
  1023.       $(MX) $(PROGS)
  1024. ***************
  1025. *** 34,40 ****
  1026.   lint:    expire.c
  1027.       lint $(LINTFLAGS) expire.c 2>&1
  1028.   
  1029. ! explist.reg:
  1030.       rm -f $@
  1031.       echo "/expired/    x    0.08    -" >>$@
  1032.       echo '/bounds/    x    0.01-0.1-0.11    - ' >>$@
  1033. --- 36,42 ----
  1034.   lint:    expire.c
  1035.       lint $(LINTFLAGS) expire.c 2>&1
  1036.   
  1037. ! explist.regw:
  1038.       rm -f $@
  1039.       echo "/expired/    x    0.08    -" >>$@
  1040.       echo '/bounds/    x    0.01-0.1-0.11    - ' >>$@
  1041. ***************
  1042. *** 46,63 ****
  1043.       echo 'mod    u    0.05    -' >>$@
  1044.       echo 'urp    x    0.01-0.05-0.1    -' >>$@
  1045.       echo "bletch    x    0.1    =`pwd`/arch3/bletch" >>$@
  1046.       echo 'all    x    0.1    @' >>$@
  1047.   
  1048.   ../util/dbz:
  1049. !     ( cd ../util ; $(MAKE) dbz )
  1050.   
  1051.   # setup for regression test
  1052. ! rsetup:    $(PROGS) ../util/dbz explist.reg
  1053.       $(MX) $(PROGS) dircheck
  1054.       >history.pag
  1055.       >history.dir
  1056.       mkdir bin
  1057. !     cp mkadir ../util/dbz bin
  1058.       echo 'exit 0' >bin/lock
  1059.       echo 'exit 0' >bin/unlock
  1060.       echo 'echo 10' >bin/spacefor
  1061. --- 48,84 ----
  1062.       echo 'mod    u    0.05    -' >>$@
  1063.       echo 'urp    x    0.01-0.05-0.1    -' >>$@
  1064.       echo "bletch    x    0.1    =`pwd`/arch3/bletch" >>$@
  1065. +     echo 'unused    x    1    -' >>$@
  1066.       echo 'all    x    0.1    @' >>$@
  1067.   
  1068. + explist.reg:    explist.regw
  1069. +     rm -f $@
  1070. +     egrep -v '^unused' explist.regw >$@
  1071. + UTILS=../util/dbz ../util/mkpdir
  1072.   ../util/dbz:
  1073. !     cd ../util ; $(MAKE) dbz
  1074. ! ../util/mkpdir:
  1075. !     cd ../util ; $(MAKE) mkpdir
  1076. ! BARFS=active.barf active.nobarf
  1077. ! AB=active.$(UPACTBARF)barf
  1078. ! active.barf:
  1079. !     echo 'barf.puke 01111 01112 y' >$@
  1080. ! active.nobarf:
  1081. !     touch $@
  1082.   
  1083.   # setup for regression test
  1084. ! rsetup:    $(PROGS) $(UTILS) explist.reg explist.regw $(BARFS)
  1085.       $(MX) $(PROGS) dircheck
  1086.       >history.pag
  1087.       >history.dir
  1088.       mkdir bin
  1089. !     cp ../util/dbz ../util/mkpdir bin
  1090.       echo 'exit 0' >bin/lock
  1091.       echo 'exit 0' >bin/unlock
  1092.       echo 'echo 10' >bin/spacefor
  1093. ***************
  1094. *** 65,72 ****
  1095.       mkdir arts arts/foo arts/bar arts/bar/ugh arts/urp arch arch2
  1096.       mkdir arts/mod arts/mod/mod arts/mod/unmod arch3 arch3/bletch
  1097.       mkdir arts/bletch arts/lost+found arts/barf arts/barf/puke
  1098. !     echo 'foo 00099 00000 y ' >>active
  1099. !     echo 'foo 00099 00001 y' >>active.after
  1100.       echo 'bar 00099 00000 m' >>active
  1101.       echo 'bar 00099 00100 m' >>active.after
  1102.       echo 'bar.ugh 00099 00000 m' >>active
  1103. --- 86,93 ----
  1104.       mkdir arts arts/foo arts/bar arts/bar/ugh arts/urp arch arch2
  1105.       mkdir arts/mod arts/mod/mod arts/mod/unmod arch3 arch3/bletch
  1106.       mkdir arts/bletch arts/lost+found arts/barf arts/barf/puke
  1107. !     echo 'foo 00103 00000 y ' >>active
  1108. !     echo 'foo 00103 00098 y' >>active.after
  1109.       echo 'bar 00099 00000 m' >>active
  1110.       echo 'bar 00099 00100 m' >>active.after
  1111.       echo 'bar.ugh 00099 00000 m' >>active
  1112. ***************
  1113. *** 79,94 ****
  1114.       echo 'mod.unmod 00016 00016 y' >>active.after
  1115.       echo 'bletch 00099 00000 y' >>active
  1116.       echo 'bletch 00099 00100 y' >>active.after
  1117. !     echo 'barf.puke 01111 01112 y' >>active
  1118. !     echo 'barf.puke 01111 01112 y' >>active.after
  1119.       echo nevermore >arts/lost+found/1
  1120. !     echo '<wont1>    9999~-    foo/1' >>history.proto
  1121. !     echo :foo/1: >arts/foo/1
  1122. !     echo 'MeSsAge-ID: <wont1>' >>arts/foo/1
  1123. !     echo '<will2>    1000~-    foo/2' >>history.proto
  1124. !     echo foo/2 >arts/foo/2
  1125. !     echo '<will3>    1000~100    foo/3' >>history.proto
  1126. !     echo foo/3 >arts/foo/3
  1127.       echo '<two4>    100    bar/4' >>history.proto
  1128.       echo :bar/4: >arts/bar/4
  1129.       echo 'SuBjeCt: yes' >>arts/bar/4
  1130. --- 100,115 ----
  1131.       echo 'mod.unmod 00016 00016 y' >>active.after
  1132.       echo 'bletch 00099 00000 y' >>active
  1133.       echo 'bletch 00099 00100 y' >>active.after
  1134. !     cat $(AB) >>active
  1135. !     cat $(AB) >>active.after
  1136.       echo nevermore >arts/lost+found/1
  1137. !     echo '<wont1>    9999~-    foo/98' >>history.proto
  1138. !     echo :foo/98: >arts/foo/98
  1139. !     echo 'MeSsAge-ID: <wont1>' >>arts/foo/98
  1140. !     echo '<will2>    1000~-    foo/99' >>history.proto
  1141. !     echo foo/99 >arts/foo/99
  1142. !     echo '<will3>    1000~100    foo/100' >>history.proto
  1143. !     echo foo/100 >arts/foo/100
  1144.       echo '<two4>    100    bar/4' >>history.proto
  1145.       echo :bar/4: >arts/bar/4
  1146.       echo 'SuBjeCt: yes' >>arts/bar/4
  1147. ***************
  1148. *** 105,118 ****
  1149.       echo '<gone8>    100~20000    urp/8' >>history.proto
  1150.       echo urp/8 >arts/urp/8
  1151.       echo '<gone9>    100~-    urp/9' >>history.proto
  1152. !     echo '<wont10>    1000~20000    foo/10' >>history.proto
  1153. !     echo :foo/10: >arts/foo/10
  1154. !     echo 'Message-ID: <wont10>' >>arts/foo/10
  1155. !     echo 'Expires:  20000' >>arts/foo/10
  1156. !     echo 'Supersedes: <wont1>' >>arts/foo/10
  1157. !     echo >>arts/foo/10
  1158. !     echo '<will11>    100~20000    foo/11' >>history.proto
  1159. !     echo foo/11 >arts/foo/11
  1160.       echo '<will12>    100~-    mod.mod/12' >>history.proto
  1161.       echo mod/mod/12 >arts/mod/mod/12
  1162.       echo '<wont13>    2000    mod.mod/13' >>history.proto
  1163. --- 126,139 ----
  1164.       echo '<gone8>    100~20000    urp/8' >>history.proto
  1165.       echo urp/8 >arts/urp/8
  1166.       echo '<gone9>    100~-    urp/9' >>history.proto
  1167. !     echo '<wont10>    1000~20000    foo/101' >>history.proto
  1168. !     echo :foo/101: >arts/foo/101
  1169. !     echo 'Message-ID: <wont10>' >>arts/foo/101
  1170. !     echo 'Expires:  20000' >>arts/foo/101
  1171. !     echo 'Supersedes: <wont1>' >>arts/foo/101
  1172. !     echo >>arts/foo/101
  1173. !     echo '<will11>    100~20000    foo/102' >>history.proto
  1174. !     echo foo/102 >arts/foo/102
  1175.       echo '<will12>    100~-    mod.mod/12' >>history.proto
  1176.       echo mod/mod/12 >arts/mod/mod/12
  1177.       echo '<wont13>    2000    mod.mod/13' >>history.proto
  1178. ***************
  1179. *** 133,145 ****
  1180.       echo '<gone98>    5000~-    urp/98' >>history.proto
  1181.       echo '<gone98>    5000~-' >>history.after
  1182.       echo urp/98 >arts/urp/98
  1183. !     echo '<multi99>    5000~-    bar/99, bar.ugh/99  foo/99 urp/99' >>history.proto
  1184. !     echo '<multi99>    5000~-    bar.ugh/99 foo/99' >>history.after
  1185. !     echo :foo/99:bar/99:bar/ugh/99:urp/99: >arts/foo/99
  1186. !     echo 'Message-ID:  <multi99>' >>arts/foo/99
  1187. !     ln arts/foo/99 arts/bar/99
  1188. !     ln arts/foo/99 arts/bar/ugh/99
  1189. !     ln arts/foo/99 arts/urp/99
  1190.       cp history.proto history
  1191.   
  1192.   # regression test machinery
  1193. --- 154,166 ----
  1194.       echo '<gone98>    5000~-    urp/98' >>history.proto
  1195.       echo '<gone98>    5000~-' >>history.after
  1196.       echo urp/98 >arts/urp/98
  1197. !     echo '<multi99>    5000~-    bar/99, bar.ugh/99  foo/103 urp/99' >>history.proto
  1198. !     echo '<multi99>    5000~-    bar.ugh/99 foo/103' >>history.after
  1199. !     echo :foo/103:bar/99:bar/ugh/99:urp/99: >arts/foo/103
  1200. !     echo 'Message-ID:  <multi99>' >>arts/foo/103
  1201. !     ln arts/foo/103 arts/bar/99
  1202. !     ln arts/foo/103 arts/bar/ugh/99
  1203. !     ln arts/foo/103 arts/urp/99
  1204.       cp history.proto history
  1205.   
  1206.   # regression test machinery
  1207. ***************
  1208. *** 160,166 ****
  1209.   
  1210.   # the regression test proper
  1211.   r:    $(PROGS) rclean rsetup dircheck tgood pgood
  1212. !     $(RUN) -c explist.reg
  1213.       : "okay, it's sane"
  1214.       $(RUN) -t explist.reg >test.out 2>&1
  1215.       sed $(FIXPATHS) test.out | cmp - tgood
  1216. --- 181,189 ----
  1217.   
  1218.   # the regression test proper
  1219.   r:    $(PROGS) rclean rsetup dircheck tgood pgood
  1220. !     $(RUN) -c explist.regw >test.out 2>test.stderr
  1221. !     test ! -s test.out ;
  1222. !     cmp wgood test.stderr || diff wgood test.stderr
  1223.       : "okay, it's sane"
  1224.       $(RUN) -t explist.reg >test.out 2>&1
  1225.       sed $(FIXPATHS) test.out | cmp - tgood
  1226. ***************
  1227. *** 178,198 ****
  1228.       egrep 'will|wont|gone|three' history.proto | ./dircheck -n arch2
  1229.       egrep three history.proto | ./dircheck arch3
  1230.       egrep 'will|wont|gone|two' history.proto | ./dircheck -n arch3
  1231. !     test -f arts/foo/99 ;
  1232.       test -f arts/bar/ugh/99 ;
  1233.       test -f arch2/bar/99 ;
  1234.       test ! -f arts/urp/99 ;
  1235.       cmp history history.after
  1236.       : "that's it for expire, on to upact"
  1237. !     $(HERE) ./upact '-#'
  1238. !     cmp active.tmp active.after
  1239.       test ! -s active.errs ;
  1240.       mv active.tmp active
  1241. !     $(HERE) ./upact
  1242. !     cmp active active.after
  1243. !     sed '/^foo /s/99/09/' active.after >active
  1244. !     $(HERE) ./upact -b
  1245. !     cmp active active.after
  1246.       : "success!"
  1247.   
  1248.   rclean:
  1249. --- 201,221 ----
  1250.       egrep 'will|wont|gone|three' history.proto | ./dircheck -n arch2
  1251.       egrep three history.proto | ./dircheck arch3
  1252.       egrep 'will|wont|gone|two' history.proto | ./dircheck -n arch3
  1253. !     test -f arts/foo/103 ;
  1254.       test -f arts/bar/ugh/99 ;
  1255.       test -f arch2/bar/99 ;
  1256.       test ! -f arts/urp/99 ;
  1257.       cmp history history.after
  1258.       : "that's it for expire, on to upact"
  1259. !     $(HERE) ./upact $(UPACTOPT) '-#'
  1260. !     cmp active.after active.tmp || diff active.after active.tmp
  1261.       test ! -s active.errs ;
  1262.       mv active.tmp active
  1263. !     $(HERE) ./upact $(UPACTOPT)
  1264. !     cmp active.after active || diff active.after active
  1265. !     sed '/^foo /s/103/009/' active.after >active
  1266. !     $(HERE) ./upact -b $(UPACTOPT)
  1267. !     cmp active.after active || diff active.after active
  1268.       : "success!"
  1269.   
  1270.   rclean:
  1271. ***************
  1272. *** 199,205 ****
  1273.       rm -f junk history history.pag history.dir history.o active active.tmp
  1274.       rm -f history.n* *mon.out history.proto history.after test.out doit
  1275.       rm -f active.old active.new explist.reg lint active.after test.stderr
  1276. !     rm -f active.errs
  1277.       rm -rf arts arch arch2 arch3 bin
  1278.   
  1279.   clean:    rclean
  1280. --- 222,228 ----
  1281.       rm -f junk history history.pag history.dir history.o active active.tmp
  1282.       rm -f history.n* *mon.out history.proto history.after test.out doit
  1283.       rm -f active.old active.new explist.reg lint active.after test.stderr
  1284. !     rm -f active.errs explist.regw $(BARFS)
  1285.       rm -rf arts arch arch2 arch3 bin
  1286.   
  1287.   clean:    rclean
  1288.  
  1289.  
  1290.  
  1291. *** expire/tgood.mastercopy    Sun Nov 27 20:05:10 1994
  1292. --- expire/tgood    Sat Oct 22 22:51:32 1994
  1293. ***************
  1294. *** 1,11 ****
  1295. ! copy foo/2 P/arch ; remove foo/2
  1296. ! copy foo/3 P/arch ; remove foo/3
  1297.   copy bar/4 P/arch2 ; remove bar/4
  1298.   copy bar/ugh/5 P/arch ; remove bar/ugh/5
  1299.   remove urp/6
  1300.   remove urp/8
  1301.   remove urp/9
  1302. ! copy foo/11 P/arch ; remove foo/11
  1303.   copy mod/mod/12 P/arch ; remove mod/mod/12
  1304.   remove mod/unmod/14
  1305.   remove mod/unmod/15
  1306. --- 1,11 ----
  1307. ! copy foo/99 P/arch ; remove foo/99
  1308. ! copy foo/100 P/arch ; remove foo/100
  1309.   copy bar/4 P/arch2 ; remove bar/4
  1310.   copy bar/ugh/5 P/arch ; remove bar/ugh/5
  1311.   remove urp/6
  1312.   remove urp/8
  1313.   remove urp/9
  1314. ! copy foo/102 P/arch ; remove foo/102
  1315.   copy mod/mod/12 P/arch ; remove mod/mod/12
  1316.   remove mod/unmod/14
  1317.   remove mod/unmod/15
  1318.  
  1319.  
  1320.  
  1321. *** expire/pgood.mastercopy    Sun Nov 27 20:05:10 1994
  1322. --- expire/pgood    Sat Oct 22 22:52:23 1994
  1323. ***************
  1324. *** 1,8 ****
  1325. ! foo/2    <will2>    1-Jan-1970    ???
  1326. ! foo/3    <will3>    1-Jan-1970    ???
  1327.   bar/4    <two4>    1-Jan-1970    yes
  1328.   bar/ugh/5    <will5>    1-Jan-1970    ???
  1329. ! foo/11    <will11>    1-Jan-1970    ???
  1330.   mod/mod/12    <will12>    1-Jan-1970    ???
  1331.   bletch/17    <three17>    1-Jan-1970    ???
  1332.   bar/99    <multi99>    1-Jan-1970    ???
  1333. --- 1,8 ----
  1334. ! foo/99    <will2>    1-Jan-1970    ???
  1335. ! foo/100    <will3>    1-Jan-1970    ???
  1336.   bar/4    <two4>    1-Jan-1970    yes
  1337.   bar/ugh/5    <will5>    1-Jan-1970    ???
  1338. ! foo/102    <will11>    1-Jan-1970    ???
  1339.   mod/mod/12    <will12>    1-Jan-1970    ???
  1340.   bletch/17    <three17>    1-Jan-1970    ???
  1341.   bar/99    <multi99>    1-Jan-1970    ???
  1342.  
  1343.  
  1344.  
  1345. *** expire/doexpire.mastercopy    Sun Nov 27 20:05:11 1994
  1346. --- expire/doexpire    Fri Nov 11 11:58:02 1994
  1347. ***************
  1348. *** 100,106 ****
  1349.   
  1350.   if test -s /tmp/doex$$
  1351.   then
  1352. !     report 'possible expire problems' </tmp/doex$$
  1353.   else
  1354.       status=0
  1355.   fi
  1356. --- 100,106 ----
  1357.   
  1358.   if test -s /tmp/doex$$
  1359.   then
  1360. !     report -u 'possible expire problems' </tmp/doex$$
  1361.   else
  1362.       status=0
  1363.   fi
  1364.  
  1365.  
  1366.  
  1367. *** expire/upact.mastercopy    Sun Nov 27 20:05:11 1994
  1368. --- expire/upact    Thu Nov 10 10:10:29 1994
  1369. ***************
  1370. *** 4,10 ****
  1371.   # =()<. ${NEWSCONFIG-@<NEWSCONFIG>@}>()=
  1372.   . ${NEWSCONFIG-/etc/news/bin/config}
  1373.   
  1374. ! PATH=$NEWSCTL/bin:$NEWSBIN:$NEWSPATH ; export PATH
  1375.   umask $NEWSUMASK
  1376.   
  1377.   maxlen=200            # max length for shell cmd; 200 is pretty safe
  1378. --- 4,10 ----
  1379.   # =()<. ${NEWSCONFIG-@<NEWSCONFIG>@}>()=
  1380.   . ${NEWSCONFIG-/etc/news/bin/config}
  1381.   
  1382. ! PATH=$NEWSCTL/bin:$NEWSBIN/maint:$NEWSBIN:$NEWSPATH ; export PATH
  1383.   umask $NEWSUMASK
  1384.   
  1385.   maxlen=200            # max length for shell cmd; 200 is pretty safe
  1386. ***************
  1387. *** 29,43 ****
  1388.   cd $NEWSCTL
  1389.   
  1390.   # check out the active file
  1391. ! nf=`sed 1q active | awk '{print NF}'`
  1392. ! if test $nf -ne 4
  1393.   then
  1394. !     echo "$0: active file has other than 4 fields" >&2
  1395.       exit 1
  1396.   fi
  1397.   if test " `awk '{print $1}' active | sort | uniq -d`" != " "
  1398.   then
  1399. !     echo "$0: duplicate entries in active file, unable to run" >&2
  1400.       exit 1
  1401.   fi
  1402.   
  1403. --- 29,45 ----
  1404.   cd $NEWSCTL
  1405.   
  1406.   # check out the active file
  1407. ! checkactive -q >active.eek
  1408. ! if test -s active.eek
  1409.   then
  1410. !     echo "$0: problems in active file -- aborting" >&2
  1411. !     cat active.eek >&2
  1412. !     rm -f active.eek
  1413.       exit 1
  1414.   fi
  1415.   if test " `awk '{print $1}' active | sort | uniq -d`" != " "
  1416.   then
  1417. !     echo "$0: duplicate newsgroups in active file, unable to run" >&2
  1418.       exit 1
  1419.   fi
  1420.   
  1421. ***************
  1422. *** 81,90 ****
  1423.           dir = ""
  1424.       }
  1425.       $0 ~ /^[0-9]+$/ {
  1426. !         if ($0 < lowest)
  1427. !             lowest = $0
  1428. !         if ($0 > highest)
  1429. !             highest = $0
  1430.           next
  1431.       }
  1432.       $0 ~ /\/\.:$/ {
  1433. --- 83,93 ----
  1434.           dir = ""
  1435.       }
  1436.       $0 ~ /^[0-9]+$/ {
  1437. !         # some old awks do not think $0 is numeric, so use $1
  1438. !         if ($1 < lowest)
  1439. !             lowest = $1
  1440. !         if ($1 > highest)
  1441. !             highest = $1
  1442.           next
  1443.       }
  1444.       $0 ~ /\/\.:$/ {
  1445. ***************
  1446. *** 135,144 ****
  1447.       }' >active.tmp
  1448.   
  1449.   # check that everything looks okay
  1450. ! awk '$2 ~ /e/ || $3 ~ /e/' active.tmp >active.eek
  1451.   if test -s active.eek
  1452.   then
  1453. !     echo "$0: setting awk OFMT doesn't work -- aborting" >&2
  1454.       exit            # with status=1
  1455.   fi
  1456.   if test `wc -l <active.tmp` -lt `wc -l <active`
  1457. --- 138,148 ----
  1458.       }' >active.tmp
  1459.   
  1460.   # check that everything looks okay
  1461. ! checkactive -q active.tmp >active.eek
  1462.   if test -s active.eek
  1463.   then
  1464. !     echo "$0: errors in active.tmp -- aborting" >&2
  1465. !     cat active.eek >&2
  1466.       exit            # with status=1
  1467.   fi
  1468.   if test `wc -l <active.tmp` -lt `wc -l <active`
  1469.  
  1470.  
  1471.  
  1472. *** expire/wgood.mastercopy    Sun Nov 27 20:05:12 1994
  1473. --- expire/wgood    Tue Oct 18 13:47:17 1994
  1474. ***************
  1475. *** 0 ****
  1476. --- 1 ----
  1477. + ./expire: warning: line 11 of control file controls no active newsgroups
  1478.  
  1479.  
  1480.  
  1481. *** explode/makefile.mastercopy    Sun Nov 27 20:05:12 1994
  1482. --- explode/makefile    Sun Nov  6 21:32:16 1994
  1483. ***************
  1484. *** 35,41 ****
  1485.       echo "exit 0" >bin/unlock
  1486.       echo "echo 5" >bin/sizeof
  1487.       echo "echo 1000" >bin/spacefor
  1488. !     echo "( echo \"$$*\" ; echo ::: ; cat ) >&2" >bin/report
  1489.       cp $(BINS) bin
  1490.       $(MX) bin/*
  1491.       echo hostb >whoami
  1492. --- 35,42 ----
  1493.       echo "exit 0" >bin/unlock
  1494.       echo "echo 5" >bin/sizeof
  1495.       echo "echo 1000" >bin/spacefor
  1496. !     echo "( echo \"\$$*\" ; echo ::: ; cat ) >&2" >bin/report
  1497. !     echo "echo 12345" >bin/now
  1498.       cp $(BINS) bin
  1499.       $(MX) bin/*
  1500.       echo hostb >whoami
  1501. ***************
  1502. *** 43,48 ****
  1503. --- 44,59 ----
  1504.       cp om.0 arts/out.master/0
  1505.       mkdir arts/out.going
  1506.       mkdir arts/out.going/foo arts/out.going/bar arts/out.going/baz
  1507. +     $(HERE) ./doexplode >stdout 2>stderr
  1508. +     test ! -s stdout ;
  1509. +     cmp om.err stderr || diff om.err stderr
  1510. +     test " `ls arts/out.master`" = " 0.12345" ;
  1511. +     cmp om.0 arts/out.master/0.12345 || diff om.0 arts/out.master/0.12345
  1512. +     cmp og.foo arts/out.going/foo/togo || diff og.foo arts/out.going/foo/togo
  1513. +     cmp og.bar arts/out.going/bar/togo || diff og.bar arts/out.going/bar/togo
  1514. +     cmp og.baz arts/out.going/baz/togo || diff og.baz arts/out.going/baz/togo
  1515. +     rm -f arts/out.master/0.12345 arts/out.going/*/togo stdout stderr
  1516. +     egrep -v nope om.0 >arts/out.master/0
  1517.       $(HERE) ./doexplode >stdout 2>stderr
  1518.       test ! -s stdout ;
  1519.       test ! -s stderr ;
  1520.  
  1521.  
  1522.  
  1523. *** explode/trbatch.c.mastercopy    Sun Nov 27 20:05:13 1994
  1524. --- explode/trbatch.c    Mon Nov  7 00:01:28 1994
  1525. ***************
  1526. *** 40,46 ****
  1527.       bf = bfincache(name);
  1528.       if (bf->bf_str == NULL) {
  1529.           bf->bf_str = fopenclex(name, "a");    /* silent try */
  1530. !         if (bf->bf_str == NULL) {
  1531.               if (bfrclose() != ST_OKAY)
  1532.                   return NULL;
  1533.               errno = 0;
  1534. --- 40,47 ----
  1535.       bf = bfincache(name);
  1536.       if (bf->bf_str == NULL) {
  1537.           bf->bf_str = fopenclex(name, "a");    /* silent try */
  1538. !         if (bf->bf_str == NULL && errno == EMFILE) {
  1539. !             /* try to free up a descriptor */
  1540.               if (bfrclose() != ST_OKAY)
  1541.                   return NULL;
  1542.               errno = 0;
  1543. ***************
  1544. *** 47,53 ****
  1545.               warning(
  1546.       "had to close a descriptor to reuse it; this should not happen!", "");
  1547.                   /* bad input? canthappen? */
  1548. !             /* retry, may bitch */
  1549.               bf->bf_str = fopenwclex(name, "a");
  1550.           }
  1551.           if (bf->bf_str != NULL)
  1552. --- 48,56 ----
  1553.               warning(
  1554.       "had to close a descriptor to reuse it; this should not happen!", "");
  1555.                   /* bad input? canthappen? */
  1556. !         }
  1557. !         if (bf->bf_str == NULL) {
  1558. !             /* retry, noisily this time */
  1559.               bf->bf_str = fopenwclex(name, "a");
  1560.           }
  1561.           if (bf->bf_str != NULL)
  1562.  
  1563.  
  1564.  
  1565. *** explode/doexplode.mastercopy    Sun Nov 27 20:05:13 1994
  1566. --- explode/doexplode    Sun Nov  6 19:18:26 1994
  1567. ***************
  1568. *** 33,39 ****
  1569.                   report -u "explode unable to rename file"
  1570.           exit
  1571.       fi
  1572. !     if explode out.master/$work 2>/tmp/ex$$
  1573.       then
  1574.           rm -f out.master/$work
  1575.       else
  1576. --- 33,39 ----
  1577.                   report -u "explode unable to rename file"
  1578.           exit
  1579.       fi
  1580. !     if explode out.master/$work 2>/tmp/ex$$ && test ! -s /tmp/ex$$
  1581.       then
  1582.           rm -f out.master/$work
  1583.       else
  1584.  
  1585.  
  1586.  
  1587. *** explode/om.0.mastercopy    Sun Nov 27 20:05:14 1994
  1588. --- explode/om.0    Sun Nov  6 21:21:18 1994
  1589. ***************
  1590. *** 13,18 ****
  1591. --- 13,19 ----
  1592.   f out.going/foo/togo
  1593.   f out.going/bar/togo
  1594.   f out.going/baz/togo
  1595. + f out.going/nope/togo
  1596.   <#5@host> control/1 192
  1597.   f out.going/foo/togo
  1598.   f out.going/bar/togo
  1599.  
  1600.  
  1601.  
  1602. *** explode/om.err.mastercopy    Sun Nov 27 20:05:14 1994
  1603. --- explode/om.err    Sun Nov  6 23:55:59 1994
  1604. ***************
  1605. *** 0 ****
  1606. --- 1,3 ----
  1607. + -u explode failed on out.master/0.12345
  1608. + :::
  1609. + explode: can't open `out.going/nope/togo' (No such file or directory)
  1610.  
  1611.  
  1612.  
  1613. *** input/makefile.mastercopy    Sun Nov 27 20:05:15 1994
  1614. --- input/makefile    Sun Oct 23 00:58:44 1994
  1615. ***************
  1616. *** 8,18 ****
  1617.   DEST=$(NEWSBIN)/input
  1618.   DBIN=$(NEWSBIN)/decompressors
  1619.   DECS=c7decode bdecode gunzip
  1620.   
  1621.   BATCH=../batch
  1622.   
  1623.   all:    $(ALL)
  1624. !     $(MX) $(PROGS)
  1625.   
  1626.   install:    $(PROGS)
  1627.       $(MKDIR) $(DEST) $(DBIN)
  1628. --- 8,19 ----
  1629.   DEST=$(NEWSBIN)/input
  1630.   DBIN=$(NEWSBIN)/decompressors
  1631.   DECS=c7decode bdecode gunzip
  1632. + PGMS=$(PROGS) $(DECS)
  1633.   
  1634.   BATCH=../batch
  1635.   
  1636.   all:    $(ALL)
  1637. !     $(MX) $(PGMS)
  1638.   
  1639.   install:    $(PROGS)
  1640.       $(MKDIR) $(DEST) $(DBIN)
  1641. ***************
  1642. *** 104,110 ****
  1643.       echo 'here is a phony third batch' >>$@
  1644.   
  1645.   rsetup:    $(ALL) rclean
  1646. !     $(MX) $(PROGS)
  1647.       mkdir bin
  1648.       echo "shift;shift;shift;cat \$$* >>`pwd`/tmp.1" >bin/relaynews
  1649.       echo "echo 10" >bin/spacefor
  1650. --- 105,111 ----
  1651.       echo 'here is a phony third batch' >>$@
  1652.   
  1653.   rsetup:    $(ALL) rclean
  1654. !     $(MX) $(PGMS)
  1655.       mkdir bin
  1656.       echo "shift;shift;shift;cat \$$* >>`pwd`/tmp.1" >bin/relaynews
  1657.       echo "echo 10" >bin/spacefor
  1658.  
  1659.  
  1660.  
  1661. *** libcnews/mkinperm.c.mastercopy    Sun Nov 27 20:05:15 1994
  1662. --- libcnews/mkinperm.c    Tue Nov  8 22:33:43 1994
  1663. ***************
  1664. *** 22,29 ****
  1665.   #define    MAXTRIES    100    /* limit on attempts to make links */
  1666.   #endif
  1667.   
  1668. - #define JAN1991 (time_t)662706000
  1669.   int mkinpdebug = 0;
  1670.   char *progname;
  1671.   
  1672. --- 22,27 ----
  1673. ***************
  1674. *** 44,50 ****
  1675.       (void) strcpy(name, p);
  1676.       p = name + strlen(name);
  1677.   
  1678. !     now = time((time_t *)NULL) - JAN1991;    /* reduce range */
  1679.       for (ntries = 0; ; ntries++) {
  1680.           (void) sprintf(p, "%s%ld%c%s", grade, now, uniq, class);
  1681.           if (mkinpdebug)
  1682. --- 42,48 ----
  1683.       (void) strcpy(name, p);
  1684.       p = name + strlen(name);
  1685.   
  1686. !     now = time((time_t *)NULL);
  1687.       for (ntries = 0; ; ntries++) {
  1688.           (void) sprintf(p, "%s%ld%c%s", grade, now, uniq, class);
  1689.           if (mkinpdebug)
  1690. ***************
  1691. *** 63,69 ****
  1692.               uniq = 'A';
  1693.           else if (uniq == 'Z'+1) {
  1694.               (void) sleep(2);
  1695. !             now = time((time_t *)NULL) - JAN1991; /* reduce range */
  1696.               uniq = '0';
  1697.           }
  1698.           if (mkinpdebug)
  1699. --- 61,67 ----
  1700.               uniq = 'A';
  1701.           else if (uniq == 'Z'+1) {
  1702.               (void) sleep(2);
  1703. !             now = time((time_t *)NULL);
  1704.               uniq = '0';
  1705.           }
  1706.           if (mkinpdebug)
  1707.  
  1708.  
  1709.  
  1710. *** libdbz/dbz.c.mastercopy    Sun Nov 27 20:05:17 1994
  1711. --- libdbz/dbz.c    Tue Nov 15 12:49:25 1994
  1712. ***************
  1713. *** 518,524 ****
  1714.       stop <<= 1;
  1715.   
  1716.       /* try odd numbers up to stop */
  1717. !     for (div = *--ip; div < stop; div += 2)
  1718.           if (x%div == 0)
  1719.               return(0);
  1720.   
  1721. --- 518,524 ----
  1722.       stop <<= 1;
  1723.   
  1724.       /* try odd numbers up to stop */
  1725. !     for (div = *--ip + 2; div < stop; div += 2)
  1726.           if (x%div == 0)
  1727.               return(0);
  1728.   
  1729.  
  1730.  
  1731.  
  1732. *** libdbz/makefile.mastercopy    Sun Nov 27 20:05:18 1994
  1733. --- libdbz/makefile    Tue Oct 25 15:47:40 1994
  1734. ***************
  1735. *** 42,58 ****
  1736.   rdbz.o:    dbz.c
  1737.       cp dbz.c rdbz.c
  1738.       $(CC) $(CFLAGS) $(DEBUG) -DDEFSIZE=$(RSIZE) -c rdbz.c
  1739. !     rm rdbz.c
  1740.   
  1741.   rdbzmain.o:    dbzmain.c
  1742.       cp dbzmain.c rdbzmain.c
  1743.       $(CC) $(CFLAGS) $(RFC) -c rdbzmain.c
  1744. !     rm rdbzmain.c
  1745.   
  1746.   tdbz.o:    dbz.c
  1747.       cp dbz.c tdbz.c
  1748.       $(CC) $(CFLAGS) -DDEFSIZE=$(TSIZE) -c tdbz.c
  1749. !     rm tdbz.c
  1750.   
  1751.   tdbz:    dbzmain.o tdbz.o dbzdbm.o
  1752.       $(CC) $(LDFLAGS) dbzmain.o tdbz.o dbzdbm.o $(LIBS) -o $@
  1753. --- 42,58 ----
  1754.   rdbz.o:    dbz.c
  1755.       cp dbz.c rdbz.c
  1756.       $(CC) $(CFLAGS) $(DEBUG) -DDEFSIZE=$(RSIZE) -c rdbz.c
  1757. !     rm -f rdbz.c
  1758.   
  1759.   rdbzmain.o:    dbzmain.c
  1760.       cp dbzmain.c rdbzmain.c
  1761.       $(CC) $(CFLAGS) $(RFC) -c rdbzmain.c
  1762. !     rm -f rdbzmain.c
  1763.   
  1764.   tdbz.o:    dbz.c
  1765.       cp dbz.c tdbz.c
  1766.       $(CC) $(CFLAGS) -DDEFSIZE=$(TSIZE) -c tdbz.c
  1767. !     rm -f tdbz.c
  1768.   
  1769.   tdbz:    dbzmain.o tdbz.o dbzdbm.o
  1770.       $(CC) $(LDFLAGS) dbzmain.o tdbz.o dbzdbm.o $(LIBS) -o $@
  1771. ***************
  1772. *** 80,86 ****
  1773.       : crude check of synthetic history file
  1774.       ( sed 25q $(RHIST) ; tail -25 $(RHIST) ) >histjunk
  1775.       cmp histjunk firstlast25
  1776. !     rm histjunk
  1777.       : basic tests, exercising as many options as possible
  1778.       cp $(RHIST) dbase
  1779.       mkdir xx
  1780. --- 80,86 ----
  1781.       : crude check of synthetic history file
  1782.       ( sed 25q $(RHIST) ; tail -25 $(RHIST) ) >histjunk
  1783.       cmp histjunk firstlast25
  1784. !     rm -f histjunk
  1785.       : basic tests, exercising as many options as possible
  1786.       cp $(RHIST) dbase
  1787.       mkdir xx
  1788. ***************
  1789. *** 159,165 ****
  1790.   
  1791.   rclean:
  1792.       rm -f dbase dbase[23] dbase.* dbase[23].* fake fake.o random.o
  1793. !     rm -f rdbz rdbz.o rdbzmain.o $(RHIST) $(R2HIST) byteflip byteflip.o
  1794.       rm -f histjunk core
  1795.       test ! -d xx || rmdir xx
  1796.   
  1797. --- 159,165 ----
  1798.   
  1799.   rclean:
  1800.       rm -f dbase dbase[23] dbase.* dbase[23].* fake fake.o random.o
  1801. !     rm -f rdbz rdbz.o rdbzmain.? $(RHIST) $(R2HIST) byteflip byteflip.o
  1802.       rm -f histjunk core
  1803.       test ! -d xx || rmdir xx
  1804.   
  1805.  
  1806.  
  1807.  
  1808.